﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Yipusoft.Evaluate.DBUtility;
using Yipusoft.Evaluate.Model;

namespace Yipusoft.Evaluate.DAL
{
    public class BaseItem
        
    {
        public BaseItem()
		{}
        public bool Exsits(int ItemID)
        {
            SqlParameter[] parameters = {
                new SqlParameter("@ItemID",SqlDbType.Int)
            };
            parameters[0].Value = ItemID;
            using (SqlConnection conn = new SqlConnection(SqlHelper.CONN_STRING))
            {
                SqlDataReader dr = SqlHelper.ExecuteReader(conn, CommandType.StoredProcedure, "BaseItems_Exsits", parameters);
                if (dr.Read())
                    return true;
                else
                    return false;
            }
        }
        public int Insert(BaseItemInfo BaseItem)
        {
            SqlParameter[] parameters = {
                new SqlParameter("@ItemID",SqlDbType.Int),
                new SqlParameter("@BaseID",SqlDbType.Int),
                new SqlParameter("@DepartmentID",SqlDbType.NVarChar,50),
                new SqlParameter("@ItemScore",SqlDbType.Decimal),
                new SqlParameter("@Description",SqlDbType.NVarChar,500),
                new SqlParameter("@YearValue",SqlDbType.Int),
                new SqlParameter("@MonthValue",SqlDbType.Int),
               
            };
            parameters[0].Direction = ParameterDirection.Output;
            parameters[1].Value = BaseItem.BaseID;
            parameters[2].Value = BaseItem.DepartmentID;
            parameters[3].Value = BaseItem.ItemScore;
            parameters[4].Value = BaseItem.Description;
            parameters[5].Value = BaseItem.YearValue;
            parameters[6].Value = BaseItem.MonthValue;


            using (SqlConnection conn = new SqlConnection(SqlHelper.CONN_STRING))
            {
                SqlHelper.ExecuteNonQuery(conn, CommandType.StoredProcedure, "BaseItems_Insert", parameters);
                return (int)parameters[0].Value;
            }
        }
        public bool Update(BaseItemInfo BaseItem)
        {
            SqlParameter[] parameters = {
                new SqlParameter("@ItemID",SqlDbType.Int),
                new SqlParameter("@BaseID",SqlDbType.Int),
                new SqlParameter("@DepartmentID",SqlDbType.NVarChar,50),
                new SqlParameter("@ItemScore",SqlDbType.Decimal),
                new SqlParameter("@Description",SqlDbType.NVarChar,500),
                new SqlParameter("@YearValue",SqlDbType.Int),
                new SqlParameter("@MonthValue",SqlDbType.Int),

            };
            parameters[0].Value = BaseItem.ItemID;
            parameters[1].Value = BaseItem.BaseID;
            parameters[2].Value = BaseItem.DepartmentID;
            parameters[3].Value = BaseItem.ItemScore;
            parameters[4].Value = BaseItem.Description;
            parameters[5].Value = BaseItem.YearValue;
            parameters[6].Value = BaseItem.MonthValue;

            using (SqlConnection conn = new SqlConnection(SqlHelper.CONN_STRING))
            {
                int rowAffected = SqlHelper.ExecuteNonQuery(conn, CommandType.StoredProcedure, "BaseItems_Update", parameters);
                return rowAffected > 0;
            }
        }
        public bool Delete(int ItemID)
        {
            SqlParameter[] parameters = {
                new SqlParameter("@ItemID",SqlDbType.Int)
            };
            parameters[0].Value = ItemID;
            using (SqlConnection conn = new SqlConnection(SqlHelper.CONN_STRING))
            {
                int rowAffected = SqlHelper.ExecuteNonQuery(conn, CommandType.StoredProcedure, "BaseItems_Delete", parameters);
                return rowAffected > 0;
            }
        }
        public BaseItemInfo GetBaseItem(int ItemID)
        {
            BaseItemInfo BaseItem = null;
            SqlParameter[] parameters = {
                new SqlParameter("@ItemID",SqlDbType.Int)
            };
            parameters[0].Value = ItemID;
            using (SqlConnection conn = new SqlConnection(SqlHelper.CONN_STRING))
            {
                SqlDataReader dr = SqlHelper.ExecuteReader(conn, CommandType.StoredProcedure, "BaseItems_GetDetail", parameters);
                if (dr.Read())
                {
                    BaseItem = new BaseItemInfo();
                    BaseItem.ItemID = dr.GetInt32(0);
                    BaseItem.BaseID = dr.GetInt32(1);
                    BaseItem.DepartmentID = dr.GetString(2);
                    BaseItem.ItemScore = dr.GetDecimal(3);
                    BaseItem.Description = dr.GetString(4);
                    BaseItem.YearValue = dr.GetInt32(5);
                    BaseItem.MonthValue = dr.GetInt32(6);
                }
                return BaseItem;
            }
        }
        public List<BaseItemInfo> GetList(string StrWhere)
        {
            List<BaseItemInfo> BaseItems = new List<BaseItemInfo>();
            BaseItemInfo BaseItem = null;
            SqlParameter[] parameters = {
                new SqlParameter("@StrWhere",SqlDbType.NVarChar,4000)
            };
            parameters[0].Value = StrWhere;
            using (SqlConnection conn = new SqlConnection(SqlHelper.CONN_STRING))
            {
                SqlDataReader dr = SqlHelper.ExecuteReader(conn, CommandType.StoredProcedure, "BaseItems_GetList", parameters);
                while (dr.Read())
                {
                    BaseItem = new BaseItemInfo();
                    BaseItem.ItemID = dr.GetInt32(0);
                    BaseItem.BaseID = dr.GetInt32(1);
                    BaseItem.DepartmentID = dr.GetString(2);
                    BaseItem.ItemScore = dr.GetDecimal(3);
                    BaseItem.Description = dr.GetString(4);
                    BaseItem.YearValue = dr.GetInt32(5);
                    BaseItem.MonthValue = dr.GetInt32(6);
                    BaseItems.Add(BaseItem);
                }
                return BaseItems;
            }
        }
    }

}
